#ifndef		__EXTERN1_H__
#define		__EXTERN1_H__

#include "timeoper.h" 
#include "metrological.h"
#include "froze_progrecord.h"
#include "errlst.h"
#include "backdata.h"

extern strFlashInfo	FlashInfo;

#include "FileSet2.h"
#include "lcdio.h"

extern u8 FrozeBuf[64];

extern sFileSet FileSet;

extern u8 ComData[500];

extern strRTCData		RTCData;

// opt extern strSCIBuf 	SCI[3];

extern u8 SCI_Num;

extern const strSetInfo DftSet;

extern	const u8 DftSetFLMode[];

extern u16	ADC_Value[4];

extern strRWSamic RWSamic;

extern@eeprom strEepLvSave eepLvSave;

extern u8 Flash_Buf[252];

extern strLVSave BkLVSave[3];

extern u8 RXData;

extern	strRamData RamData;

extern u8* @tiny pChar;
extern u8* @tiny base1;
extern u8* @tiny base2;

extern @tiny u8 RWCFG; 

extern const u8 zeroP[];

extern const u8 frozeZone[];

extern const	strFData	FData;

extern u32 rtcBck;
extern u32 rtcBckImg;


extern  USART_TypeDef* const pSCI[3];
//-----------------------------------------------------------------------------
void	IDle(void);					//IRQ.c
 void	SetDispState(u8	State);				//
void	SetDispSubItem(u8 Item,	u8 Secs);
 
void	DispNull(void);
u16	GetDispItemSet(u8 Num);
 void	UpDisp(void);
//void	DoDisp(void);
 
void	SetDispArry(u8 Num);
void	SetDispItem(u8 Item, u8	Num, u8	DispSet);

void	DoKeyDisp(u8 Mode);
void	DoIRDisp(void);
void	PwrOffDisp(void);
void	SetpArry(u8 Num);
void setBitBandSram(u8* s, u8 n);
//---------------------------------------------------------
void	Init_GPIO(u8);
u16	Get_ADC( u16 ADC_Num, u8	ADC_SampleTime);
u16	GetADCVolt(u16 ADCData);
void	SetTBOC(void);
void	WaitTBOC(u16 Tm);
void	DelayTBOC(u16 Tm);
void	DelayMS(u16 MS);
void	GetRTCT(void);
u32	GetRTCCnt(void);
u8	SetRTCBias(u16 Diff);

 
void	CheckTime(void);
void	Init_Time(void);
void	InitDisp(void);
void	UpdateDisp(void);
void	CloseDisp(void);
void	Init_IRCLK(u8 Mode);
void	Close_ClkOut(void);
void	Close_IR(void);
void	Send_IR( uc8* Buf, u8 Num);
void	Init_MCU(void);
u16	Get_LVDVolt(void);
void	Chk_Key_Value(void);
void	Wait_Rst(void);
void	SetupIWDG(u8	Secs);
void	I2C_Delay(void);

void	GC_Init(void);

void	Do_MsTask(void);
void	Do_HalfSecTask(void);
void	Do_SecTask(void);
void	Do_MinTask(void);
void	Do_TRx(void);


u32	GetUseData(u16	Code);
 
 

void	SetEState( u16 StateBit, u8 Mode );

//u16	GetFrozeCnt(u8	Type);
//u16	GetFrozeStart( u8 type,	u8 Num);
//void	ClrFroze(u8* TypeLst, u8 Num);
//void	Up_FrozeData( uc8 *Src,	u8 Type);
//void	Up_NormFroze(u8 Type);



void	Reset_EFroze(void);

strFLUse* GetFLBase(u8 Feilv);


u32	Get645Data(u32 Code);
u32	Write645Data(u32 Code);
u8	GetSafeState(u8 Length);

void	SetErrReturn(u8	Code);
//---------------------------------------------------------
u32 abs32(u32 x);
u8	HEX(u8 Data);
u8	BCD(u8 Data);
void	FillRam(u8 *Dst, u8 Data, u8	Length);
void	CopyRam(u8 *Dst, u8	*Src, u8 Length);
void	RevCopyRam( u8* Dst, u8* Src, u8 Length);
u32	Hex_BCD(u32 Data, u8* Dst);
u32	BCD_Hex(u32 Data);
u16	GetSum(u8 	*buf, u16 Cnt);
u8	BCD_Inc(u8 Data);
u32	GetLongByte( u32 Data, u8 N);
u8	CheckBCD(u8   *buf,	u8 Cnt);
s8	strCmp(uc8 *buf,uc8 *buf2, u8 len);


u32 	GetASCII(u16 Data);
void	SetpChar(u8* p);
void	NormCopy( u8 *Addr, u8 Length);
void	RevCopy( void *Addr, u8	Length);
u16	GetCodeAddr(u32	Code);
u16	Get_Code_Lst(u16 Addr, u16 Code, u8 Bytes, u8 Length);
@near u32	MvData(u32 Code);

u32	MoveDataLst(u32	  *pCode);
void	ClrRam(u8* buf, u8 Cnt);
u32	ClrpCharRam( u8 Cnt);
u16	GetFileSetAddr(u16 Bias);
//---------------------------------------------------------

u8	SetUserBack(void);

u8 IC_645Cut_Code(void);
u8 IC_645Commniucate(void);

u8 Init_8209(void);
void DoSinglePhase_8209(void);
u8 recv8209(void);

u8 Init_7053(void);
void DoSinglePhase_7053(void);
u8 recv7053(void);
u8 doCal8209(void);
//---------------------------------------------------------
void	wrFeiLvToEEP(void);

//u32 bkpReadBackupRegister(u8 n);

void bkpWriteBackupRegister(u8 n, u32 x);
void bkpSetRTCCalibrationValue(s16);

u32 rtcGetCounter(void);


u16 getFrozeTypeAddr(u8 Type);

//u8 wrEEP_ST8(u8* buf, u8* dst, u8 len);
u8 wrFlash_ST8(u8* buf, u8* dst, u8 len);

u32	GetAddrData(u16 Addr, u8 Length, u8 Dir);
void ChkAlmJD(void);
void Close_IRCLK(void);
void Write_FLSave(void);
void Write_LV_2(void);



void StartBeep(u8 Mode);
void SetupTimer(void);
void Chk_EOPen_Value(void);
void CheckRTCTemp(void);
void	delayMs(u8 n);

void Delay_Etu(void);
void ReadBit(void);
u8   ReadByte(void);
void SendBit(void);
u8   WriteByte(u8 Data);
u8	Write_EEData( u8* Buf, u16 Addr, u8 Lth);
u8	Read_EEData( u8* Buf, u16 Addr, u8 Lth);


void  rtcWrEnable(void);
void  rtcWrDisable(void);

void  clrCoverOpenCnt(void);


u32 rev32(u32* s);

void InitRTCTemp(void);
void	InitDispProg(void) ;



  #define wrEEP_ST8(a,b, c)     Copy_FlashInfo(b,a,c)
#define wrFlash_ST8(a,b,c)				Copy_FlashInfo(b,a,c)
#endif

